const redis = require('redis');
const dotenv = require('dotenv');

dotenv.config();

// 创建Redis客户端
const createRedisClient = async () => {
  const client = redis.createClient({
    socket: {
      host: process.env.REDIS_HOST || 'localhost',
      port: process.env.REDIS_PORT || 6379,
      reconnectStrategy: (retries) => {
        if (retries > 10) {
          console.error('Redis重试次数超过10次，停止重试');
          return false;
        }
        return Math.min(retries * 100, 3000);
      }
    },
    password: process.env.REDIS_PASSWORD || undefined
  });

  // 监听连接事件
  client.on('connect', () => {
    console.log('Redis客户端已连接');
  });

  // 监听就绪事件
  client.on('ready', () => {
    console.log('Redis连接就绪');
  });

  // 监听错误事件
  client.on('error', (err) => {
    console.error('Redis连接错误:', err);
  });

  // 监听断开连接事件
  client.on('end', () => {
    console.log('Redis连接已断开');
  });

  try {
    await client.connect();
    console.log('Redis连接成功');
    return client;
  } catch (error) {
    console.warn('Redis连接失败:', error.message);
    // 不抛出错误，允许应用继续运行
    return null;
  }
};

module.exports = createRedisClient;